/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hr.fer.zpr.nmbp.project2.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;

@Entity
@Table(name="BOLEST"
    ,schema="PUBLIC"
    ,catalog="EBOLNICA"
)
public class Bolest implements Serializable {

	private String sifra;	//primarni ključ
	private String naziv;
    private String opis;
    
    private List<Dijagnoza> dijagnoze = new ArrayList<Dijagnoza>();
    
    public Bolest() {
    }
    public Bolest(String sifra) {
        this.sifra = sifra;
    }
    public Bolest(String sifra, String naziv, String opis, List dijagnoze) {
       this.sifra = sifra;
       this.naziv = naziv;
       this.opis = opis;
       this.dijagnoze = dijagnoze;
    }

    @Id
    @Column(name="SIFRA", unique=true, nullable=false)
    public String getSifra() {
		return sifra;
	}

	public void setSifra(String sifra) {
		this.sifra = sifra;
	}

    @Column(name="NAZIV")
    public String getNaziv() {
        return naziv;
    }

    public void setNaziv(String naziv) {
        this.naziv = naziv;
    }

    @Column(name="OPIS")
    public String getOpis() {
        return opis;
    }

    public void setOpis(String opis) {
        this.opis = opis;
    }
    
    @ManyToMany(cascade=CascadeType.REFRESH, fetch=FetchType.LAZY)
    @JoinTable(name="DIJAGNOZA_BOLEST", schema="PUBLIC", catalog="EBOLNICA", joinColumns = { 
        @JoinColumn(name="BOLEST_SIFRA", updatable=false) }, inverseJoinColumns = { 
        @JoinColumn(name="DIJAGNOZA_SIFRA", updatable=false) })
    public List<Dijagnoza> getDijagnoze() {
        return this.dijagnoze;
    }
    
    public void setDijagnoze(List dijagnoze) {
        this.dijagnoze = dijagnoze;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Bolest other = (Bolest) obj;
        if ((this.naziv == null) ? (other.naziv != null) : !this.naziv.equals(other.naziv)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 67 * hash + (this.naziv != null ? this.naziv.hashCode() : 0);
        return hash;
    }
    
    @Override
    public String toString() {
    	return this.naziv;
    }
}
